Reliability improvement of distributed transaction processing optimizations based on connection status

ABSTRACT

A method for resolving a potential in-doubt condition of a distributed transaction, is provided. A processor receives a request to commit a transaction for a distributed transaction protocol that includes an applied process, the transaction includes a transfer of a commit decision from a coordinating node to a participating node. The processor checks the service status of the connection to the participating node, and finding the service status of the connection out of service or unavailable, the processor instructs the coordinating node to back-out (rollback) the transaction. Additionally, locality meta-data is used as an indication of reliability of the connection to the participating node, and in response to determining the participating node locality to be a remote network connection, the processor instructs the coordinating node to abort the applied process and send a standard distributed transaction protocol message over unreliable connections.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of distributedtransaction processing, and more particularly to use of connectionstatus techniques to reduce occurrences of in-doubt occurrences ofdistributed transaction processing.

A distributed transaction is the execution of one or more units of workdistributed on different systems. A distributed commit protocol isrequired to ensure that the effects of a distributed transaction areatomic, that is, either all the effects of the transaction persist ornone persist, whether or not failures occur. A well-known commitprotocol is the two-phase commit (2PC) protocol. For transactionprocessing applications such as hotel reservations, airlinereservations, stock market transactions, or banking applications, thecommit processing takes up a substantial part of the transaction.Therefore, the performance of a commit protocol substantially affectsthe transaction volume that a system can support.

The “last agent commit process”, is an optimization of the distributedtwo-phase commit protocol, and is a widely used optimization to improvethe performance of commit processing. Last agent commit optimizationreduces time-consuming message sending and log writes, between atransaction manager (TM), coordinating the transaction, and a remoteresource participant within the distributed processing system. Inproviding an optimization of the two-phase commit protocol, the lastagent commit process removes the prepare phase message for the lastparticipant, and the coordinating participant sends a commit message tothe last participant, with all other participants having prepared andconfirming a commit vote to proceed. The last participant determines thelast vote of whether to proceed with the commit of the transactionprocess or back-out and roll back the transaction. The last agent commitprocess creates a potential large period of in-doubt failure between thelast remote write and receipt of a commit or back-out (rollback)message.

The period between when a distributed transaction participant hasprepared its own recoverable state and voted yes to commit, and the timewhen it is instructed to perform the commit (or perform a back-out ifsome failure or no vote was received at some point within the subsequentdistributed prepare processing), is known as the “in-doubt” window.Units of work are said to be in-doubt during this time, as they are notyet aware of whether they will need to commit or back out, and access todata involved in the transaction remains locked-out for use by otherpending transactions.

SUMMARY

According to one embodiment of the present invention, a method, forresolving a potential in-doubt condition of a distributed transaction,is provided. The method for preventing an in-doubt condition of adistributed transaction, includes a processor that receives a request tocommit a transaction of a distributed transaction protocol including anapplied process, the transaction including a coordinating node and aparticipating node. The processor determines a service status of aconnection to the participating node, and in response to determining theservice status of the connection to be unavailable, the processorinstructing the coordinating node to back-out the transaction.

According to another embodiment of the present invention, the method forresolving a potential in-doubt condition of a distributed transaction,includes the processor that determines a locality of a connection to theparticipating node, and in response to determining the locality of theconnection to be a remote network connection, the processor instructsthe coordinating node to abort the applied process of the distributedtransaction protocol and alternatively perform a standard distributedtransaction protocol process.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a distributedtransaction processing environment, in accordance with an embodiment ofthe present invention.

FIG. 2 is a functional block diagram depicting an operational connectionbetween two transaction processing systems of FIG. 1, in accordance withan embodiment of the present invention.

FIG. 3 illustrates operational steps of a connection program, insertedon a client device within the data processing environment of FIG. 1, inaccordance with an embodiment of the present invention.

FIG. 4 depicts a block diagram of components of a computing devicecapable of operating the connection program, in accordance with anembodiment of the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention, recognize that applied processoptimizations of distributed transaction processing protocols, such aslast agent commit process optimization of a two phase commit protocol,may result in an in-doubt condition due to failed or unreliablecommunication connections between two or more transaction systemparticipants. An applied process of a distributed transaction protocol,such as a last agent commit optimization process, is when thecoordinator node of a distributed transaction instructs all but one(n−1) of its (n) participant nodes to prepare themselves, and assumingthey prepare and each votes yes to a commit, the coordinatingparticipant then sends a message to the final (n^(th)) unit of work tocommit. Using and applied process to optimize the distributedtransaction avoids a network flow to the last agent participant. Inapplying the last agent commit optimization process, the coordinator haseffectively passed the coordination role of the transaction units ofwork, to the n^(th) system, and the original coordinator now becomes anin-doubt participant in the sync point.

The unit of work in the n^(th) system (now the coordinator of the syncpoint) will either be able to commit to perform the unit of work, ornot. If the unit of work can be performed, the n^(th) system sends aresponse message to the original coordinator that it has committed. Theresponse message effectively passes the coordination role back to theunit of work of the original coordinator, which had been in-doubt whileit awaited the response. The original coordinator can now commit its ownrecoverable resource updates, then instruct the n−1 participant units ofwork to commit themselves (they are all in-doubt with respect to ituntil this point). Likewise, if the last agent coordinator unit of workhad been unable to commit, and had backed-out its changes instead, thenthe response would have been passed back along with the coordinationrole to the original coordinating system, which had been in-doubt whileit awaited the response. The original coordinator can now back out itsown recoverable state changes, then tell the n−1 participant units ofwork to back out their respective changes (again, they are all in-doubtwith respect to it until this point).

The period between when a participant has prepared its own recoverablestate and voted yes to commit to a unit of work of a transaction, andthe time when the participant is instructed to perform the commit (orperform a back-out if some failure or a “no” vote was received at somepoint within the distributed prepare processing) is known as thein-doubt window. Units of work are said to be in-doubt during this time,as they are not yet aware of whether they will need to commit orback-out. An in-doubt condition results in a relatively longinterruption of processing, and data resources are locked out,unavailable to other transaction processes.

Embodiments of the present invention recognize that interruption ordelay of connections between systems participating in a distributedtransaction processing environment, producing an in-doubt condition,results in lengthy delays and loss of transactional efficiency intendedby applying transaction optimization processes, such as the last agentcommit process. Some embodiments recognize that remote participatingsystems are more likely to experience connection reliability issues, ascompared to local connections, due to propagating through additionalnetwork connection points and competing with additional communicationnetwork traffic.

Some embodiments of the present invention make use of anon-transactional network verification function and meta-data associatedwith distributed transaction connections, to identify failed orunreliable connections and significantly reduce the likelihood oftransactions becoming in-doubt for optimization processes applied to atwo-phase commit protocol. A connection status monitoring the servicestatus of a connection to participating nodes of the transaction, ismaintained by the transaction process system. Inactive connections areconfirmed to prevent the flow of last agent commit messages in the eventof failed network connections. Additionally connection localitymeta-data is used to determine whether a connection is reliable, andthus whether to apply last agent commit processing or standard two-phasecommit processing for the transactions, thus reducing the probability ofencountering an in-doubt condition.

Detailed embodiments of the claimed methods, computer program products,and systems, are disclosed herein; however, it is to be understood thatthe disclosed embodiments are merely illustrative, and other embodimentsmay be implemented in various forms. In addition, each of the examplesgiven in connection with the various embodiments is intended to beillustrative, and not restrictive. Further, the figures are notnecessarily to scale, some features may be exaggerated to show detailsof particular components. Therefore, specific structural and functionaldetails disclosed herein are not to be interpreted as limiting, butmerely as a representative basis for teaching one skilled in the art tovariously employ the methods, computer program products, and systems ofthe present disclosure.

The present invention will now be described in detail with reference tothe Figures. FIG. 1 is a functional block diagram illustrating adistributed computer processing environment, generally designated 100,in accordance with an embodiment of the present invention. FIG. 1provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironment may be made by those skilled in the art without departingfrom the scope of the invention as recited by the claims.

FIG. 1 is a functional block diagram illustrating distributedtransaction processing environment 100, in accordance with an embodimentof the present invention. Distributed transaction processing environment100 includes server computing device 110, local resource manager 120,remote resource manager 130, local database 140, and remote database160, all interconnected via network 150. Server computing device 110 isdepicted as hosting transaction manager 115 and connection program 300.

Networks 150 may be, for example, a local area network (LAN), atelecommunications network, a wide area network (WAN), such as theInternet, a virtual local area network (VLAN), or any combination thatcan include wired, wireless, or optical connections. In general, network150 can be any combination of connections and protocols that willsupport communications between server computing device 110, localresource manager 120, and remote resource manager 130, withindistributed computer processing environment 100, in accordance withembodiments of the present invention.

Local resource manager 120 is a resource manager that receivestransaction processes from applications to perform units of work of atransaction. Local resource manager 120 is controlled by transactionmanager 115, which oversees the execution of application processes bydistributing units of work to available resource managers, such as localresource manager 120 and remote resource manager 140. Local resourcemanager 120 is depicted as under direct access of transaction manager115, and within a local cluster of server computing device 110, asdetermined by connection locality meta-data, which may include suchinformation as machine specific location, LAN, TCP/IP, sub-network, andcluster communication information.

In some embodiments of the present invention, local resource manager 120participates in global transaction processing, in which a transactionprotocol may be applied to perform transaction units of work. Forexample, a two-phase commit protocol may be used by transaction manager(TM) 115 and local resource 120 to perform transaction processing, toattain an atomicity in transaction processing. Additionally, anoptimization process may be applied to the two-phased commit protocol,such as a last agent commit process, to improve the efficiency andperformance of the transactions under a distributed transactionprotocol, such as the two-phased commit protocol.

A last agent commit optimization involves the transaction coordinatorcommunicating to all but one of the participating nodes, to prepare toperform a unit of work of a transaction. The transaction coordinatorconfirms that all but one participant can perform the work, by eachparticipant voting yes to a commit. Confirming the commit by all but oneparticipant, the transaction coordinator communicates a message to thefinal participant to commit. The coordinator has effectively passed thecoordination role to the final participant in another system todetermine if the transaction proceeds or is backed out. The unit of workin the other system will determine if it is able to commit or not. Ifthe decision communicated back to the original transaction coordinatoris that it has committed, then the commit message is received by theoriginal transaction coordinator, which again assumes the coordinatorrole, and communicates to the other participants, which had beenin-doubt while awaiting the response from the final participant, tocommit to their respective units of work of the transaction. Likewise,if the last participant with a unit of work assigned by the transactionmanager, had been unable to commit, and had backed out its changesinstead, then a back out response would have been passed back along withthe coordination role to the original transaction coordinator, which hadbeen in-doubt while it awaited the response. The original coordinatorcan now back out its own recoverable state changes, then direct theother participants to back out (roll back) the units of work they hadperformed.

Database 140 is an example of a resource that includes data that can beacted upon by a resource manager. Database 140 is accessible by localresource manager 120, which is capable of performing transaction unitsof work on data within database 140.

Remote resource manager 130 is a remote resource manager, located aspart of a wide area network relative to server computing device 110.Resource manager 130 is determined to be remote based on connectionlocality meta-data, which may include such information as machinespecific location, LAN, TCP/IP, sub-network, and cluster communicationinformation, for example. Resource manager 130 receives instructions viaa connection with transaction manager 115, as a transaction coordinator,which oversees the execution of application processes by distributingunits of work to available resource managers, such as resource manager130. In some embodiments in which a last agent commit processoptimization is applied to perform a distributed transaction process,remote resource manager 130 is a remote participant, having a unit ofwork to perform for a transaction coordinated by transaction manager115.

Database 160 is an example resource that includes data accessible andmanaged by resource manager 130, which is enlisted by transactionmanager 115 to perform transaction units of work using the data ofdatabase 160.

Server computing device 110 may be a desktop computing device, a rackmounted computing device, a blade server, a management server, a mobilecomputing device, or any other electronic device or computing systemcapable of performing program instructions, and receiving and sendingdata. In other embodiments, server computing device 110 may represent acomputing system utilizing multiple computers as a server system, suchas in a cloud computing environment. In yet other embodiments, servercomputing device 110 may be a laptop computer, a tablet computer, anetbook computer, a personal computer (PC), a desktop computer, apersonal digital assistant (PDA), a smart phone, or any programmableelectronic device capable of communicating with local resource managers120 and remote resource manager 130, via network 150. In anotherembodiment, server computing device 110 may be a computing systemutilizing clustered computers and components (e.g., database servercomputer, application server computers, etc.) that act as a single poolof seamless resources when accessed within distributed computerprocessing environment 100. Server computing device 110 may includeinternal and external hardware components, as depicted and describedwith reference to FIG. 4.

Server computing device 110 is depicted as including transaction manager115 and connection program 300. In some embodiments of the presentinvention, server computing device 110 performs application processoperations that include transactions distributed across a transactionprocessing environment, such as distributed transaction processingenvironment 100.

In some embodiments of the present invention, transaction manager 115 isan operational part of a middleware environment residing on servercomputing device 110, and receives workload from client input of runningapplications. Transaction manager 115 coordinates the activities of theworkload by enlisting resource managers to perform units of work of thetransaction workload, such as local resource manager 120 and remoteresource manager 130. Transaction manager 115 sends and receivescommunication messages with resource managers participating in adistributed transaction protocol, such as a two-phased commit protocol,or an optimization process of a distributed transaction protocol, suchas a last agent commit process.

In some embodiments of the present invention, connection program 300 isan extension of a network management component of a computing system,such as server computing device 110. The network management component isused to establish the connection between the nodes participating in thetransaction, to handle individual messages that are sent and receivedover the connection, release the connection when it is no longer needed,and process error conditions that may occur during operations.Connection program 300 extends the network management component, anduses input regarding the messaging activity of connections as anindication that a connection to a resource manager is still functioningcorrectly. Connection program 300 uses meta-data input regarding thelocality of a connection as an indicator of the likelihood ofreliability.

Connection program 300 determines the status and potential reliabilityof communications between transaction manager 115 and participatingresource managers (nodes) of a distributed transaction, to which anoptimization, such as a last agent commit process, has been applied. Insome embodiments of the present invention, connection program 300 checksthe status of connections to nodes (hereafter, node connections),participating in a distributed transaction, by validating messagereceipt information of each connection, which is performed by a networkmanagement component of the transaction manager host system, such asserver computing device 110. For example, the network managementcomponent (not shown) of server computing device 110 monitors thereceipt of messages from each connection participating in distributedtransactions coordinated by transaction manager 115. The networkmanagement component sets a flag indicating successful receipt of amessage from a particular connection

In some embodiments of the present invention, the network managementcomponent of the transaction manager host system sets a flag for eachparticipant from which a message is successfully received within adefined time interval. At the end of the time interval, a separateexamination process determines which node connections have been idle,based on the corresponding flag indicating that a message has not beensuccessfully received from the node connection. If node connections aredetermined to remain idle at the end of a subsequent time interval, theexamination process initiates a heartbeat process, which delivers aheartbeat message for the idle node connections, and the examinationprocess resets the flags for all other node connections participating inthe distributed transaction, and begins the next time interval. If areply to the heartbeat message is received, the connection is determinedto be operational, and the flag is set indicating the connection asvalid and operational for the current time interval. The examinationprocess continues for all node connections participating in thetransaction. The examination process does not initiate a heartbeatmessage for the node connections having connection flags set to indicatethe successful receipt of a message within the time interval, indicatinga valid and operational connection. This avoids unnecessary message flowand undo interruption of the examination process.

The heartbeat process is invoked to check the validity of a nodeconnection that appears to be in service but has failed to indicate thesuccessful receipt of a message within consecutive time intervals.Invoking the heartbeat process sends a heartbeat message outside of thetransaction band, to the node connections determined to be idle. In someembodiments of the present invention, at the end of the time interval,the network management component determines if any node connection ofthe distributed transaction does not have a flag set indicating that amessage has been successfully received within the time interval.

In some embodiments of the present invention, the examination processand the heartbeat process are separate existing modules, operatingoutside the transaction process, and working in conjunction with thenetwork management component of the host system and connection program300. In other embodiments, the examination process and the heartbeatprocess may be modules of the network management component of the hostsystem.

The connection status maintained by the network management component ofthe transaction processing system is used to prevent the flow of lastagent commit messages across a failed network connection, and theconnection locality meta-data is used to determine whether or not aconnection is reliable, based on the locality of the connection.Connection program 300 determines the information associated with theconnection status of participating nodes, as well as the reliabilityinformation of participating nodes, based on the connection localitymeta-data, and in one embodiment, sends the information to thetransaction manager for decision making of whether to proceed with thelast agent commit process or revert to the standard two-phase commitprocess. In another embodiment, connection program 300 instructs thetransaction manager to abort the last agent commit process andalternatively perform a standard two phase commit protocol process, inresponse to the service status of the connection to the last agent nodedetermined to be unavailable, and in the case of determining thelocality of the last commit agent node to be a remote networkconnection.

FIG. 2 is a functional block diagram depicting operational connections200, between two transaction processing systems of FIG. 1, in accordancewith an embodiment of the present invention. Depicted in operationalconnections 200 is server computing device 110, which includes unit ofwork 210, sync point 215, locality meta-data 220, connection status 225,transaction manager 115, and connection program 300. Also depicted inFIG. 2, connected via network 150, is transaction process connection230, heartbeat message connection 235, participating node 240, and unitof work 245.

Unit of work 210 is a first component of a transaction to be performedby server computing device 110 and unit of work 245 is a second activityof a transaction to be performed by participating node 240. In asimplified exemplary embodiment of the present invention performance ofunit of work 210 and unit of work 245 complete the transaction.Participating node 240 is a resource manager connected via network 150and transaction process connection 230 to transaction manager 115, ofserver computing device 110.

Transaction manager 115 performs a coordinating role in the distributionof units of work 210 and 245, of the transaction. In some embodiments ofthe present invention, while performing a two phase commit protocol of adistributed transaction of operational connections 200, transactionmanager 115 initiates a sync point for the commit or rollback decisionof units of work 210 and 245. A sync point is used to establishatomicity of a transaction, in which all participating nodes committheir respective unit of work, or all participating nodes back-out thetransaction updates and return data to a pre-transaction state. In otherembodiments, while applying a last agent commit optimization,transaction manager sends a commit message to participating node 240 andincludes information indicating that transaction manager 115 is preparedto commit or rollback unit of work 210, depending on the decisionresponse received from participating node 240. In the last agent commitoptimization process, transaction manager has transferred thecoordinating role to participating node 245 as the “last agent”, andwaits in-doubt for a response from participating node 240.

Sync point 215 is established in the two phase commit protocol bytransaction manager 115 as the coordinating role of the transaction.Sync point 215 includes sending messages instructing the preparation ofperforming unit of work 210 and unit of work 245 and receivingconfirmation “votes” from participating resource managers, for example,participating node 240, to commit to performing the unit of work, or toback out and rollback the unit of work to the pre-transaction state.

In some embodiments of the present invention, locality meta-data 220includes information regarding the relative location of resourcemanagers connected and communicating with transaction manager 115.Locality meta-data 220 stores node connection information ofparticipating node 240, performing unit of work 245 for the transaction,and node connection information regarding the performance of unit ofwork 210 by server computing device 110. The information may include,for example, a specific socket used, determining if the resourceperforming the unit of work shares the same operating system (as is thecase of server computing device 110 and transaction manager 115),determining if the node connection is on the same IP sub-network, ordetermining if the connection is on a different IP address. Theinformation included in locality meta-data 220 is used to determine if aconnection of a participating node in a distributed transaction is localor remote. A local node connection may be within a cluster ofinterconnected systems within substantially the same location, or may beto a resource manager within the same local area network (LAN). Messagessent to and received from local connections are less likely toexperience connection failures related to message-propagating devices,firewalls, and other network events, and thus local connections areconsidered more reliable than connections that are non-local, or remote.In one embodiment of the present invention, connection program 300receives information regarding the locality of a node connection fromtransaction manager 115, and stores the locality information and/or thelikely reliability of the connection, in locality meta-data 220. Inanother embodiment, the information regarding the locality of a nodeconnection is stored in locality meta-data 220 by the network managementcomponent of server computing device 110 (not shown).

Connection status 225 functions to record if a successful message hasbeen sent to a participating node connection, and a reply or responsehas been received, within a defined time interval. At the beginning ofthe defined time interval, the flags for all node connections are set toa default setting of “off”. If a message has been successfully received,the connection is recorded as operational, for example, by setting aflag as “on”. If a message has not been successfully received from theconnection, the flag remains at a setting of “off”. Connection status225 maintains the status of the connections, also referred to as theservice status of the connections of participating nodes, enlisted bytransaction manager 115, and associated with performing the distributedunits of work of the transaction, such as units of work 210 and 245.During a defined time interval, if a message is received from the nodeconnection with participating node 240, connection status 225 changesthe default flag setting of “off”, to “on” for the node connection. If,however, during the defined time interval, no message was received fromthe connection with participating node 240, the flag associated withparticipating node 240 would remain at the setting of off.

In some embodiments of the present invention, the defined time intervalmay have lapsed without sending or receiving a message to aparticipating node, and therefore the status remains at a defaultsetting of off. In order to determine if the connection remainsoperational, an examination process monitors connection status 225, andidentifies the connections that have a status of off, at the end of thedefined time interval. The examination process initiates a heartbeatprocess that generates a “heartbeat” message to the participating nodesthat have a connection status of off, to test the connection. Thesuccessful transmission and response of a heartbeat message may preventa firewall from releasing network resources associated with an otherwiseidle connection. An unsuccessful transmission and response of aheartbeat message, or an unexpected delay in receiving a response to thetransmitted heartbeat message, indicates that there may be a potentialproblem with the connection, and the connection may be unreliable.Heartbeat messages are not sent to connections whose correspondingconnection status flag indicates that the connection has received amessage within the defined time interval and is valid. In someembodiments of the present invention, the heartbeat message may berepeated, in response to determining a previously unsuccessful heartbeatmessage.

In some embodiments of the present invention, connection status 225resides in system memory and is controlled and accessible by the networkmanagement component of server computing device 110, the examinationprocess, and connection program 300. In other embodiments, connectionstatus 225 is included as part of a network management component of aparticipating or coordinating system within distributed transactionprocessing environment 100.

Heartbeat message connection 235 is a messaging connection between thenetwork management component of server computing device 110, working inconjunction with transaction manager 115, and participating nodes of thedistributed transaction, such as participating node 240. Heartbeatconnection 235 is a connection external to the transaction processthread performing units of work 210 and 245 over transaction processconnection 230. A heartbeat process is initiated by an examinationprocess subsequent to determining that a participating node connectionhas failed to indicate the successful receipt of a message inconsecutive time intervals. Heartbeat connection 235 carries a heartbeatmessage to nodes determined to be idle, to initiate a responseindicating the connection remains valid and operational. Heartbeatconnection 235 carries heartbeat messages only to the node connectionsindicating an absence of a message received during the defined timeinterval, to avoid unnecessary flow of messages through the network.

Transaction process connection 230 is a communication connection betweentransaction manager 115 and participating node 240. In some embodimentsof the present invention, transaction process connection 230 is atransmission control protocol of the internet protocol suite (TCP/IP)type of connection. Network packets sent over internet protocol (IP)sockets are buffered by the TCP/IP stack in a “send buffer” memory area.The send buffer accommodates several small messages in its memory, suchas a commit message from transaction manager 115, using a last agentcommit process optimization. The socket writer for the send buffer willnot be blocked regardless of the state of transaction process connection230, and will transmit messages. If the network encounters atransmission failure, it may not be detected until an acknowledgementpacket is not received within a period of time, often in the range of200 milliseconds. Following the TCP protocol, the message packet will bere-transmitted a number of times until the sending stack reaches apre-determined limit of retries, and signals a communication error. There-try period may be in the order of several seconds to minutes, and ifthe network failure occurs just prior to the sending of a commit messageto a participating node as the last agent, there is no reliable way forthe sending system to detect the failure. The sending node and othernodes of a multi-node transaction using last agent commit optimization,remain in-doubt due to the undetected connection failure, and continueto hold resources in a lock-out state, anticipating a decision to commitor back out of performing the units of work.

Use of heartbeat messages sent to connections determined to be idlewithin a defined time interval, enables the detection of failed ordelayed connections. The determination of failed or delayed connections,along with the connection reliability information of connection status225, may be used by transaction manager 115, to make a decision to deferfrom using a process optimization, such as last agent commit process,and instead proceed with a standard two phase commit protocol.

FIG. 3 illustrates operational steps of connection program 300, insertedon a client device within the data processing environment of FIG. 1, inaccordance with an embodiment of the present invention. Connectionprogram 300 operates in an environment of connected systems potentiallyutilizing a two phase commit protocol optimization process, such as alast agent commit process. Connection program 300 receives a request toissue a transaction commit message (step 310). The transaction managerreceives a request from an application process to commit to atransaction. The architecture of the distributed transaction may havedifferent configurations that include all nodes directly connected tothe transaction manager, or a tree structure of nodes, in which thecoordinating transaction manager may have nodes that are alsotransaction managers. The transaction manager issues a “prepare”instruction to all directly connected nodes, except for one node. Thenode excluded from the prepare instruction is the agent of the lastagent commit optimization process. The nodes receiving a prepareinstruction determine whether an assigned unit of work can be performed,and return a message vote to commit to the unit of work, or return aback out vote if some condition exists in which the unit of work cannotbe performed. If even one of a multitude of nodes returns a vote to backout, all units of work of the transaction are backed out, and results ina rollback of the transaction to a pre-transaction state.

For example, transaction manager 115 receives a request to issue acommit instruction from an application process. Transaction manager 115,operating a distributed transaction protocol utilizing the last agentcommit optimization process, sends a prepare message to local resourcemanagers 120, but does not send a prepare message to resource manager130. Resource managers 120 receive the prepare message and unanimouslydetermine to commit to the respectively assigned units of work of thetransaction, or if at least one of resource managers 120 does not voteto commit to perform the respective unit of work of the transaction, theunits of work are backed out and a rollback to a pre-transaction stateoccurs.

Connection program 300 checks the status of the connections ofparticipating nodes of the transaction (step 320). In some embodimentsof the present invention, connection program 300 receives connectionstatus input of participating nodes in the distributed transactionprocess, indicating if node connections are valid and operational withina defined time interval. If a message has been successfully receivedfrom a participating node, within the defined time interval, theconnection to the node is determined to be valid. In one embodiment ofthe present invention, a valid node connection is indicated by an “on”flag corresponding to the node connection. If the node has been idlewith regard to messages received and acknowledged, the connection statusof an “off” designation, for example, would be indicated and theconnection considered to possibly be non-operational.

For example, Connection program 300 checks connections status 225 todetermine if the connection flag corresponding to resource manager 130is on or off. In some embodiments of the present invention, the flagdesignations may be considered as, “yes” or “no”, “true” or “false”,“active” or “inactive”, or any designation that differentiates betweensuccessfully receiving and not receiving a response to a message, from anode, during the defined time interval.

In other embodiments of the present invention, connection program 300accesses the status condition of the participating node connections todetermine if node connections are valid and operational, as determinedwithin the current defined time interval.

The status of node connections is maintained and updated by anexamination process and heartbeat process (input step 320A). Theinformation indicating the service status of the connections to theparticipating nodes, also referred to as the connection status, in someembodiments of the present invention, is maintained by the setting of aflag, corresponding to a particular connection of a node participatingin the distributed transaction. In some embodiments, the networkmanagement component of the transaction manager host system, updates aflag corresponding to a particular node connection upon the successfulreceipt of a message from the particular node. An examination process,scheduled at a defined time interval, determines if a flag correspondingto a node connection indicates a failure to successfully receive amessage within the defined time interval. The examination processidentifies the idle node connection, initiates a heartbeat process thatsends a heartbeat message to the idle node connection, and resets theflags for all node connections of the distributed transaction. Theexamination process continues, and the network management component ofthe system hosting the transaction manager continues to update flags ofcorresponding node connections when messages are successfully received.In other embodiments of the present invention, a connectionestablishment protocol may be used to determine a state of theconnection to a participating node.

Connection program 300 determines whether a node connection isoperational within the defined time interval (decision step 330), anddetermining that the node connection is not operational (step 330, “NO”branch), connection program 300 sends a message to the transactionmanager to rollback the transaction (step 370) In some embodiments ofthe present invention, determining if the node connection is notoperational involves connection program 300 determining whether the nodeconnection has remained idle for consecutive defined time intervals,which indicates that in a separate process, a heartbeat message has beensent to the idle connection, for example, without successful receipt ofa response message. Connection program 300 determines from the servicestatus of the connection of the participating node that the connectionremains idle. The connection status indicates a lost or problematicconnection. Sending an instruction to the transaction manager, orsending information to the transaction manager to decide to rollback(back-out) the transaction, enables the transaction manager to notifyall other nodes participating in the transaction to rollback theirrespective units of work. The rollback instruction returns all units ofwork to their respective pre-transaction state, and releases the lockplaced on the resources involved in the transaction. In some embodimentsan error message may be generated by the network management component ofthe coordinating system if the connection remains unresponsive. Forexample, having confirmed the connection status as idle subsequent toconsecutive defined time intervals, in which at least one heartbeatmessage was sent to the idle connection, connection program 300determines that the connection is not operational, and generates amessage sent to transaction manager 115 advising a rollback of all nodesparticipating in the current transaction.

Having sent a rollback message to the transaction manager, connectionprogram 300 sends a message to the transaction manager (TM) advising theTM to proceed with a standard two phase commit processing (step 380).Connection program 300 recognizes the non-operational node, which maypotentially be designated as a last agent node, and due to theunreliability of the node connection, advises the transaction manager toproceed with a standard two phase commit protocol process, avoiding anin-doubt condition.

For example, transaction manager enlists local resource manager 120 andremote resource manager 130 for a distributed process transaction.Connection program 300 checks the connection status of remote resource130 and determines that the connection has been idle for at least twoconsecutive defined time intervals of the examination process, and sendsa message to transaction manager 115 to rollback the transaction for allnodes participating in the distributed transaction process. Connectionprogram 300 sends a message to transaction manager 115 advising astandard two phase commit process to be used for the transaction. Havingsent the instruction to proceed with a standard two phase commitprocess, connection program 300 ends.

Reverting back to decision step 330, connection program 300, havingdetermined that a response has been received from the connection to theparticipating node within the defined time interval (step 330, “YES”branch), connection program 300 checks the locality meta-data of theconnection (step 340). The locality meta-data includes informationindicating whether the connection to the node chosen as the last agentto commit is a local connection or a remote network connection. A localconnection may be an integrated component of a system cluster, a systemlocated on a local area network, or a system part of the samesub-network of an IP address, for example. A local connection may notinvolve network processing components and additional firewalls that mayblock or delay communication messages, and therefore connection program300 considers a local connection as more likely to be a reliableconnection if it is determined that the connection status isoperational.

A remote network connection may be a connection having a different IPaddress than that of the system hosting the transaction manager of adistributed transaction. Messages to and from a remote networkconnection transverse network control devices and routing componentsthat may include the ability to block connection requests or terminateconnections inactive for a particular period of time. Messages sentacross a remote network connection are considered by connection program300 to incur longer delays and be less reliable than local connections.Connection program 300 accesses the information of locality meta-data220 (FIG. 2).

Having accessed locality meta-data information of a participating nodeselected as the last agent of a last agent commit optimization process,connection program 300 determines if the connection is local (decisionstep 350). Determining, from the locality meta-data, the connection tothe node selected as the last agent to commit, to be a local connection(step 350, “YES” branch), connection program 300 sends a message to thetransaction manager (TM) to proceed with using the last agent commitoptimization process (step 360). For example, connection program 300determines from locality meta-data 220 that the node selected as thelast agent is a local connection, on the same sub-network, whichindicates to connection program 300 that the node connection is likelyto be reliable. Connection program 300 advises the transaction managerto proceed with the use of the last agent commit optimization processand continue for the transaction, as the likelihood of an in-doubtcondition occurring is low.

Having determined from the locality meta-data, the connection to thenode selected as the last agent to commit, to be a remote networkconnection (step 350, “NO” branch), connection program 300 advises thetransaction manager to proceed with standard two phase commit processing(step 380), and continue as described above. For example, connectionprogram 300 has determined that a connection to remote resource manager130, is a remote network connection, by accessing information regardingthe connection to remote resource manager 130 in locality meta-data 220.The connection has been selected as the last agent of a last agentcommit optimization process by transaction manager 115. Connectionprogram 300 sends instruction to transaction manager 115 to abort thelast agent commit optimization process and proceed with a standard twophase commit process to perform the transaction units of work, due tothe information in locality meta-data 220 indicating remote resourcemanager 130 as a remote connection. Having sent the message totransaction manager 115, connection program 300 ends.

FIG. 4 depicts a block diagram of components of computing device 400capable of operating connection program 300, in accordance with anembodiment of the present invention. It should be appreciated that FIG.4 provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironment may be made.

Computing device 400 includes communications fabric 402, which providescommunications between computer processor(s) 404, memory 406, persistentstorage 408, communications unit 410, and input/output (I/O)interface(s) 412. Communications fabric 402 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric402 can be implemented with one or more buses.

Memory 406 and persistent storage 408 are computer-readable storagemedia. In this embodiment, memory 406 includes random access memory(RAM) 414 and cache memory 416. In general, memory 406 can include anysuitable volatile or non-volatile computer-readable storage media.

Connection program 300 is stored in persistent storage 408 for executionby one or more of the respective computer processors 404 via one or morememories of memory 406. In this embodiment, persistent storage 408includes a magnetic hard disk drive. Alternatively, or in addition to amagnetic hard disk drive, persistent storage 408 can include a solidstate hard drive, a semiconductor storage device, read-only memory(ROM), erasable programmable read-only memory (EPROM), flash memory, orany other computer-readable storage media that is capable of storingprogram instructions or digital information.

The media used by persistent storage 408 may also be removable. Forexample, a removable hard drive may be used for persistent storage 408.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage408.

Communications unit 410, in these examples, provides for communicationswith other data processing systems or devices, including resources ofdistributed communication processing environment 100. In these examples,communications unit 410 includes one or more network interface cards.Communications unit 410 may provide communications through the use ofeither or both physical and wireless communications links. Connectionprogram 300 may be downloaded to persistent storage 408 throughcommunications unit 410.

I/O interface(s) 412 allows for input and output of data with otherdevices that may be connected to computing device 400. For example, I/Ointerface 412 may provide a connection to external devices 418 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 418 can also include portable computer-readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention, e.g., connection program 300 canbe stored on such portable computer-readable storage media and can beloaded onto persistent storage 408 via I/O interface(s) 412. I/Ointerface(s) 412 also connect to a display 420.

Display 420 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A method for resolving a potential in-doubtcondition of a distributed transaction, the computer program productcomprising: receiving, by a processor, a request to commit a transactionof a distributed transaction protocol that includes an applied process,the transaction includes at least a coordinating node and aparticipating node; determining, by the processor, a service status of aconnection to the participating node; in response to determining theservice status of the connection to the participating node to beunavailable, the processor instructing the coordinating node to back-outthe transaction; determining, by the processor, a reliability of theconnection of the participating node, based on meta-data correspondingto the participating node, wherein the metadata indicates whether thelocality of the participating node is a remote network connection, andwhether the remote network connection includes a connection to asub-network that is a different sub-network than that of thecoordinating node of the transaction; in response to determining thelocality of the connection of the participating node is a remote networkconnection, and the locality of the remote network connection includes aconnection to a sub-network that is a different sub-network than that ofthe coordinating node, the processor communicating to the coordinatingnode to abort the applied process of the distributed transactionprotocol and alternatively perform a standard two phase commit protocolprocess; and in response to determining the locality of the connectionof the participating node is a local network connection, the processortransferring a decision to commit the transaction from the coordinatingnode to the participating node.
 2. The method of claim 1, wherein thedistributed transaction protocol is a two phase commit protocol, and theapplied process is an optimization process.
 3. The method of claim 2,wherein the optimization process is a last agent commit optimizationprocess for a two phase commit protocol and the at feast oneparticipating node is a last agent of the last agent commit optimizationprocess.
 4. The method of claim 1, wherein determining the servicestatus of the connection to the participating node is not available, isbased on the service status of the connection that remains unavailablesubsequent to sending a message, external to the transaction, to theparticipating node.
 5. A method for reducing a potential in-doubtcondition of a distributed transaction, the method comprising:receiving, by a processor, a request to commit a transaction of adistributed transaction protocol that includes a last agent commitoptimization process, the transaction includes a connection of acoordinating node to a participating node, and meta-data includinglocality information associated with the connection to the participatingnode; determining, by the processor, whether the meta-data associatedwith the connection of the coordinating node to the participating nodeindicates a locality of the connection of the participating node as aremote network connection, and whether the remote network connectionincludes a connection to a sub-network that differs from that of asub-network of the coordinating node of the transaction; and in responseto determining the locality of the connection to the participating nodeis a remote network connection, and the locality of the remote networkconnection includes a connection to a sub-network that differs from thatof the sub-network of the coordinating node, the processor,communicating to the coordinating node to abort the last agent commitoptimization process of the distributed transaction protocol andalternatively perform a standard two phase commit protocol process. 6.The method of claim 5, further comprising: in response to determiningthe locality of the connection of the participating node is one of: alocal network connection, and a remote network connection which includesa connection to a sub-network that is a same subnetwork as thecoordinating node, the processor instructing the coordinating node totransfer a decision to commit the transaction from the coordinating nodeto the participating node.
 7. The method of claim 5, wherein the appliedoptimization process is a last agent commit optimization process for atwo phase commit protocol and the at least one participating node is alast agent of the last agent commit optimization process.